############################################################################
# HDFS v0.3 
#
# > make 				: build hdfs.dll
# > make xilinx			: build xilinx.dll (forces full rebuild - takes about 5 mins)
# > make clean			: clean temp files and dll's
#
############################################################################

############################################################################
# configuration
############################################################################

# execution environment for .NET executables (needed on some linux platforms)
EXEC = mono
# path to F# compiler tools
FSC_PATH = /home/andyman/dev/tools/FSharp-1.9.6.2/bin
# F# compiler, lex + yacc
FSC = $(EXEC) $(FSC_PATH)/fsc.exe
FSLEX = $(EXEC) $(FSC_PATH)/fslex.exe
FSYACC = $(EXEC) $(FSC_PATH)/fsyacc.exe
# path to xilinx unisim library
XILINX_UNISIM = /opt/Xilinx/10.1/ISE/vhdl/src/unisims/unisim_VCOMP.vhd

.PHONY: all xilinx
all: hdfs.dll

############################################################################
# hdfs.dll
############################################################################

# hdfs.dll source files
SRC = \
	src/numeric.ml \
	src/signal.ml \
	src/circuit.ml \
	src/resources.ml \
	src/simulator.ml \
	src/c.ml \
	src/verilog.ml \
	src/vhdl.ml \
	src/hdutil.ml \
	src/hdadd.ml \
	src/hdmul.ml \
	src/hddiv.ml \
	src/hdram.ml \
	src/fixed.ml \
	src/sort.ml \
	src/rac.ml \
	src/cordic.ml \
	src/fft.ml \
	src/hdcaml.ml

hdfs.dll: $(SRC) 
	$(FSC) -a -o hdfs.dll -r FSharp.PowerPack.dll $(SRC)

############################################################################
# xilinx.dll
############################################################################

xilinx: 
	$(FSYACC) -o src/xilinx_parser.fs src/xilinx_parser.mly
	$(FSLEX) -o src/xilinx_lexer.fs src/xilinx_lexer.mll
	$(FSC) -o xilinx.exe -r FSharp.PowerPack.dll src/xilinx_types.ml src/xilinx_parser.fs src/xilinx_lexer.fs src/xilinx_gen.ml
	$(EXEC) xilinx.exe $(XILINX_UNISIM) src/xilinx.ml
	$(FSC) -a -o xilinx.dll $(XIL_LIB_LINK_DLLS) --times -O- -r FSharp.PowerPack.dll -r hdfs.dll src/xilinx.ml src/xilinx_synth.ml

############################################################################
# maintenance
############################################################################

clean:
	rm -f xilinx.exe src/xilinx.ml src/xilinx_lexer.fs src/xilinx_parser.fs xilinx.dll hdfs.dll
